/*
 * All right reserved@Raygo 2022~2030
 */

package com.raygo.runner.core.command;

import java.util.List;
import java.util.Map;

import com.raygo.runner.core.entity.FlowContext;

/**
 * 命令接口
 *
 * @author Raygo
 * @since 2022年8月6日
 */
public interface Command {
    /**
     * 执行命令
     *
     * @param input   输入
     * @param context 上下文
     * @return 结果
     * @throws CmdException 异常
     */
    CmdResult runCommand(Map<String, Object> input, FlowContext context) throws CmdException;

    /**
     * 获取输入参数
     *
     * @return 输入参数
     */
    List<CmdParam<?>> getInputParam();

    /**
     * 获取输出参数
     *
     * @return 输出参数
     */
    List<CmdParam<?>> getOutputParam();
}
